iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
Software Development

30天刷完leetcoode75系列 第 2

C++ 演算法練習 Day2|605,345,151 題解與思路分享

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20260916/20184265Dvk11sCBUj.png

題目解析:現在有一個花園,我要中n朵花,但花不能兩株中在一起,所以現在要幫忙判斷花園的空間是否可以種n朵花,0代表空的,1代表已經種花了
解題思路:先設一個vector來做計算用,並在陣列的前後都各家上一個0,這樣就能直接拿原本陣列去做計算,不用擔心會超出陣列範圍的問題

class Solution {
public:
    bool canPlaceFlowers(vector<int>& flowerbed, int n) {
        vector<bool> v;
        v.push_back(0);
        v.insert(v.end(), flowerbed.begin(), flowerbed.end());
        v.push_back(0);

        for(int i=1; i<v.size()-1 && n != 0; i++){
            if(!(v[i-1] || v[i] || v[i+1])){
                v[i] = 1;
                n--;
            }
        }

        if(n == 0) return 1;
        else return 0;
    }
};

https://ithelp.ithome.com.tw/upload/images/20260916/20184265EvITlzheE4.png

題目解析:現在有一個字串s,我們需要將字串中的母音(包含大小寫)的順序去整個做反轉
解題思路:先設兩個數字i,j去紀錄等等到哪個位置,i負責紀錄前面的數字,j負責紀錄後面的數字,然後如果i跟j同時都是母音就進行交換,如果不是母音的+-1,是母音的就不要動

class Solution {
public:
    string reverseVowels(string s) {
        int i=0, j=s.size()-1;
        set<char> v{'a','e','i','o','u','A','E','I','O','U'};
        while(i < j){
            if(!v.count(s[i])) i++;
            if(!v.count(s[j])) j--;

            if(v.count(s[i]) && v.count(s[j])){
                swap(s[i], s[j]);
                i++, j--;
            }
        }

        return s;
    }
};

https://ithelp.ithome.com.tw/upload/images/20260916/20184265iimGK7bbWv.png

題目解析:現在有一個句子s,我們需要將句子中的單詞位置倒過來,並將多餘的空白進行刪除
解題思路:先將s打包成stringstream,這樣我們就可以直接用getline去切割整個字串,然後記得如果有連續兩個空白時,他會多切割一個"",而不是" ",小細節要注意,當while跑完後記得將最後多出來的空白進行刪除

class Solution {
public:
    string reverseWords(string s) {
        string ans = "";
        stringstream S(s);

        while(getline(S, s, ' ')){
            if(s != "") ans = s + " " + ans;
        }
        
        ans.erase(ans.size()-1, 1);
        return ans;
    }
};

上一篇
C++ 演算法練習 Day1|1768, 1071, 1431 題解與思路分享
下一篇
C++ 演算法練習 Day3|238, 334, 443 題解與思路分享
系列文
30天刷完leetcoode756
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言